home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-12-21 | 6.9 KB | 159 lines | [TEXT/CWIE] |
- UNIT Search;
-
- { Apple Macintosh Developer Technical Support }
- { }
- { IndexedSearch and the PBCatSearch compatibility function. }
- { by Jim Luther, Apple Developer Technical Support Emeritus }
- { }
- { File: Search.p }
- { }
- { Copyright © 1992-1995 Apple Computer, Inc. }
- { All rights reserved. }
- { }
- { You may incorporate this sample code into your applications without }
- { restriction, though the sample code has been provided "AS IS" and the }
- { responsibility for its operation is 100% yours. However, what you are }
- { not permitted to do is to redistribute the source as "DSC Sample Code" }
- { after having made changes. If you're going to re-distribute the source, }
- { we require that you make it clear in the source that the code was }
- { descended from Apple Sample Code, but that you've made changes. }
-
-
- INTERFACE
-
- USES
- Files;
-
- {***************************************************************************}
-
-
- FUNCTION IndexedSearch (pb: HParmBlkPtr;
- dirID: LongInt): OSErr;
- { The IndexedSearch function performs an indexed search in and below the }
- { specified directory using the same parameters (in pb) as is passed to }
- { PBCatSearch. See Inside Macintosh: Files for a description of the }
- { parameter block. }
- { }
- { pb input: A CSParamPtr record specifying the volume to search }
- { and the search criteria. }
- { output: Fields in the parameter block are returned }
- { indicating the number of matches found, the }
- { matches, and if the search ended with noErr, the }
- { CatPosition record that lets you resume a search }
- { where the last search left off. }
- { dirID input: The directory to search. If fsRtDirID is passed, }
- { the entire volume is searched. }
- { }
- { Note: If you use a high-level debugger and use ioSearchTime to limit }
- { the length of time to run the search, you'll want to step over }
- { calls to IndexedSearch because it installs a Time Manager task. }
- { Most high-level debuggers don't deal gracefully with interrupt }
- { driven code. }
-
-
- {***************************************************************************}
-
-
- FUNCTION PBCatSearchSyncCompat (paramBlock: HParmBlkPtr): OSErr;
- { The PBCatSearchSyncCompat function uses PBCatSearch (if available) or }
- { IndexedSearch (if PBCatSearch is not available) to search a volume }
- { using a set of search criteria that you specify. It builds a list of }
- { all files or directories that meet your specifications. }
- { }
- { pb input: A CSParamPtr record specifying the volume to search }
- { and the search criteria. }
- { output: Fields in the parameter block are returned }
- { indicating the number of matches found, the }
- { matches, and if the search ended with noErr, the }
- { CatPosition record that lets you resume a search }
- { where the last search left off. }
- { }
- { Note: If you use a high-level debugger and use ioSearchTime to limit }
- { the length of time to run the search, you'll want to step over }
- { calls to PBCatSearchSyncCompat because it calls IndexedSearch }
- { which installs a Time Manager task. Most high-level debuggers }
- { don't deal gracefully with interrupt driven code. }
-
-
- {***************************************************************************}
-
-
- FUNCTION NameFileSearch (volName: StringPtr;
- vRefNum: Integer;
- fileName: Str255;
- matches: FSSpecPtr;
- reqMatchCount: LongInt;
- VAR actMatchCount: LongInt;
- newSearch: Boolean;
- partial: Boolean): OSErr;
- { Use NameFileSearch to search for files with a specific file name on a }
- { volume that supports PBCatSearch. }
- { Note: A result of catChangedErr means the catalog has changed between }
- { searches, but the search can be continued with the possiblity that you }
- { may miss some matches or get duplicate matches. For all other results }
- { (except for noErr), the search cannot be continued. }
- { }
- { volName input: A pointer to the name of a mounted volume }
- { or nil. }
- { vRefNum input: Volume specification. }
- { fileName input: The name of the file to search for. }
- { matches input: Pointer to array of FSSpec where the match list }
- { is returned. }
- { reqMatchCount input: Maximum number of matches to return (the number }
- { of elements in the matches array). }
- { actMatchCount output: The number of matches actually returned. }
- { newSearch input: If true, start a new search. If false and if }
- { vRefNum is the same as the last call to }
- { NameFileSearch, then start searching at the }
- { position where the last search left off. }
- { partial input: If the partial parameter is false, then only }
- { files that exactly match fileName will be }
- { found. If the partial parameter is true, then }
- { all file names that contain fileName will be }
- { found. }
-
-
- {***************************************************************************}
-
-
- FUNCTION CreatorTypeFileSearch (volName: StringPtr;
- vRefNum: Integer;
- creator: OSType;
- fileType: OSType;
- matches: FSSpecPtr;
- reqMatchCount: LongInt;
- VAR actMatchCount: LongInt;
- newSearch: Boolean): OSErr;
- { Use CreatorTypeFileSearch to search for files with a specific creator }
- { or fileType on a volume that supports PBCatSearch. }
- { Note: A result of catChangedErr means the catalog has changed between }
- { searches, but the search can be continued with the possiblity that you }
- { may miss some matches or get duplicate matches. For all other results }
- { (except for noErr), the search cannot be continued. }
- { }
- { volName input: A pointer to the name of a mounted volume }
- { or nil. }
- { vRefNum input: Volume specification. }
- { creator input: The creator type of the file to search for. }
- { To ignore the creator type, pass 0x00000000 in }
- { this field. }
- { fileType input: The file type of the file to search for. }
- { To ignore the file type, pass 0x00000000 in }
- { this field. }
- { matches input: Pointer to array of FSSpec where the match list }
- { is returned. }
- { reqMatchCount input: Maximum number of matches to return (the number }
- { of elements in the matches array). }
- { actMatchCount output: The number of matches actually returned. }
- { newSearch input: If true, start a new search. If false and if }
- { vRefNum is the same as the last call to }
- { CreatorTypeFileSearch, then start searching at }
- { the position where the last search left off. }
-
-
- {***************************************************************************}
-
-
- IMPLEMENTATION
-
- END.